home *** CD-ROM | disk | FTP | other *** search
/ Stone Design / Stone Design.iso / Stone_Friends / Wave / WavesWorld / Source / IBPalettes / WW3DKit / RIBMakeTexture.m < prev    next >
Encoding:
Text File  |  1995-03-22  |  3.6 KB  |  135 lines

  1.  
  2. #import "RIBMakeTexture.h"
  3. #import "ri/ri.h"
  4.  
  5. @implementation RIBMakeTexture
  6.  
  7. + initialize { return [RIBMakeTexture setVersion:1], self; }
  8.  
  9. - init
  10. {
  11.   [super init];
  12.  
  13.   pictureName = textureName = NULL;
  14.   sWrap = tWrap = RI_CLAMP;
  15.   filterFunc = (RtFloatFunc)RiGaussianFilter;
  16.   filterFuncName = NXCopyStringBuffer("gaussian");
  17.   sWidth = tWidth = 3.0;
  18.  
  19.   return self;
  20. }
  21.  
  22. - setPictureName:(const char *)newPictureName textureName:(const char *)newTextureName
  23.      sWrap:(RtToken)newSWrap tWrap:(RtToken)newTWrap filterFuncName:(const char *)newFilterFuncName
  24.      sWidth:(RtFloat)newSWidth tWidth:(RtFloat)newTWidth 
  25. {
  26.    pictureName = NXCopyStringBuffer(newPictureName);
  27.    textureName = NXCopyStringBuffer(newTextureName);
  28.    sWrap = NXCopyStringBuffer(newSWrap);
  29.    tWrap = NXCopyStringBuffer(newTWrap);
  30.    if (!strcmp(newFilterFuncName, "box"))
  31.    {  filterFunc = (RtFloatFunc)RiBoxFilter; 
  32.       filterFuncName = NXCopyStringBuffer("box"); 
  33.    }
  34.    if (!strcmp(newFilterFuncName, "triangle"))
  35.    {  filterFunc = (RtFloatFunc)RiTriangleFilter; 
  36.       filterFuncName = NXCopyStringBuffer("triangle"); 
  37.    }
  38.    if (!strcmp(newFilterFuncName, "catmull-rom"))
  39.    {  filterFunc = (RtFloatFunc)RiCatmullRomFilter; 
  40.       filterFuncName = NXCopyStringBuffer("catmull-rom"); 
  41.    }
  42.    if (!strcmp(newFilterFuncName, "sinc"))
  43.    {  filterFunc = (RtFloatFunc)RiSincFilter; 
  44.       filterFuncName = NXCopyStringBuffer("sinc"); 
  45.    }
  46.    if (!strcmp(newFilterFuncName, "gaussian"))
  47.    {  filterFunc = (RtFloatFunc)RiGaussianFilter; 
  48.       filterFuncName = NXCopyStringBuffer("gaussian"); 
  49.    }
  50.    sWidth = newSWidth;
  51.    tWidth = newTWidth;
  52.  
  53.    return self;
  54. }
  55.  
  56. - renderMaps:(WW3DCamera *)camera startingAt:(RtFloat)shutterOpenTime endingAt:(RtFloat)shutterCloseTime usingStream:(NXStream *)ns
  57. {
  58.    NXPrintf(ns, 
  59.         "MakeTexture \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" %f %f ", 
  60.         pictureName, textureName, sWrap, tWrap, filterFuncName, sWidth, tWidth);
  61.    //[super writeParameterList:ns];
  62.    return self;
  63. }
  64.  
  65. - renderMaps:(WW3DCamera *)camera usingStream:(NXStream *)ns
  66. {
  67.   RtFloat  shutterOpenTime = [camera shutterOpenTime],
  68.            shutterCloseTime = [camera shutterCloseTime];
  69.  
  70.  
  71.   return [self renderMaps:camera startingAt:shutterOpenTime endingAt:shutterCloseTime usingStream:ns];
  72. }
  73.  
  74.  
  75. - renderMaps:(WW3DCamera *)camera startingAt:(RtFloat)shutterOpenTime endingAt:(RtFloat)shutterCloseTime
  76. {
  77.   RiMakeTexture(pictureName, textureName, sWrap, tWrap, filterFunc, sWidth, tWidth, RI_NULL);
  78.  
  79.   return self;
  80. }
  81.  
  82. - renderMaps:(WW3DCamera *)camera
  83. {
  84.   RtFloat  shutterOpenTime = [camera shutterOpenTime],
  85.            shutterCloseTime = [camera shutterCloseTime];
  86.  
  87.  
  88.   return [self renderSelf:camera startingAt:shutterOpenTime endingAt:shutterCloseTime];
  89. }
  90.  
  91.  
  92. - writeEve:(NXStream *)stream atTabLevel:(int)tab
  93. {
  94.    int  i;
  95.  
  96.  
  97.    for (i = 0; i < tab; i++)
  98.    {  NXPrintf(stream, "\t");
  99.    }
  100.    NXPrintf(stream, 
  101.         "MakeTexture {%s} {%s} {%s} {%s} {%s} %f %f ", 
  102.         pictureName, textureName, sWrap, tWrap, filterFuncName, sWidth, tWidth);
  103.    [super writeParameterList:stream];
  104.    return self;
  105. }
  106.  
  107. #define typeVector "*****ff"
  108. #define typeValues &pictureName, &textureName, &sWrap, &tWrap, &filterFuncName, &sWidth, &tWidth
  109.  
  110. - read:(NXTypedStream *)stream 
  111. {
  112.     int version;
  113.     [super read:stream];
  114.  
  115.     version = NXTypedStreamClassVersion(stream, "RIBMakeTexture");
  116.     if (version == 0) NXReadTypes(stream, "i", &version), version=1;
  117.     if (version == 1)
  118.     {  NXReadTypes(stream, typeVector, typeValues);
  119.     } 
  120.     else 
  121.     {
  122.     }
  123.     return self;
  124. }
  125.  
  126. - write:(NXTypedStream *)stream 
  127. {
  128.     [super write:stream];
  129.  
  130.     NXWriteTypes(stream, typeVector, typeValues);
  131.  
  132.     return self;
  133. }
  134. @end
  135.